package com.atwisdom.star.controller;

import com.alibaba.fastjson.JSONObject;
import com.atwisdom.star.common.vo.JsonResult;
import com.atwisdom.star.common.vo.ResultInfo;
import com.atwisdom.star.core.bsl.das.Impl.RealTimeInfoBslServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/das")
public class DasController {

    @Autowired
    private RealTimeInfoBslServiceImpl realTimeInfoBslService;

    @PostMapping(value = "/queryAll")
    public ResultInfo<?> queryAll() {
        return realTimeInfoBslService.queryAll();
    }

    @PostMapping(value = "/query")
    public ResultInfo<?> query(@RequestBody JSONObject param) {
        return realTimeInfoBslService.query(param);
    }

    @PostMapping(value = "/queryByPage")
    public ResultInfo<?> queryByPage(@RequestBody JSONObject param) {
        return realTimeInfoBslService.queryByPage(param);
    }

    @PostMapping(value = "/getById")
    public ResultInfo<?> getById(@RequestParam Object id) {
        return realTimeInfoBslService.getById(id);
    }

    @PostMapping(value = "/getByField")
    public ResultInfo<?> getByField(@RequestBody JSONObject param) {
        return realTimeInfoBslService.getByField(param);
    }

    @PostMapping(value = "/statInfo")
    public ResultInfo<?> getStatInfo(@RequestBody JSONObject param) {
        return realTimeInfoBslService.getStatInfo(param);
    }

    /**
     * 按分钟统计设备计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/minute/equipCount")
    public ResultInfo<?> getMinuteEquipCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.getMinuteEquipCount(param);
    }

    /**
     * 按分钟统计设备列表计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/minute/equipListCount")
    public ResultInfo<?> queryMinuteEquipListCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.queryMinuteEquipCount(param);
    }

    /**
     * 按小时统计设备计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/hour/equipCount")
    public ResultInfo<?> getHourEquipCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.getHourEquipCount(param);
    }

    /**
     * 按小时统计设备列表计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/hour/equipListCount")
    public ResultInfo<?> queryHourEquipListCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.queryHourEquipCount(param);
    }

    /**
     * 按小时统计设备计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/day/equipCount")
    public ResultInfo<?> getDayEquipCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.getDayEquipCount(param);
    }

    /**
     * 按天统计设备列表计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/day/equipListCount")
    public ResultInfo<?> queryDayEquipListCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.queryDayEquipCount(param);
    }


    /**
     * 按月统计设备计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/month/equipCount")
    public ResultInfo<?> getMonthEquipCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.getMonthEquipCount(param);
    }

    /**
     * 按天月统计设备列表计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/month/equipListCount")
    public ResultInfo<?> queryMonthEquipListCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.queryMonthEquipCount(param);
    }

    /**
     * 按年统计设备计数
     * @param param 参数 equipCode 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/year/equipCount")
    public ResultInfo<?> getYearEquipCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.getYearEquipCount(param);
    }

    /**
     * 按天月统计设备列表计数
     * @param param 参数 equipCodes 设备编码,startTime 开始时间，endTime 结束时间
     * @return 返回统计信息
     */
    @PostMapping(value = "/year/equipListCount")
    public ResultInfo<?> queryYearEquipListCount(@RequestBody JSONObject param) {
        return realTimeInfoBslService.queryYearEquipCount(param);
    }

}